import request from '@/utils/request';
import qs from 'qs';
import { ResponseData } from '../typing';
// 参数接口
export interface CreatePraiseParams {
    // 工单类型，0报修、1投诉、2表扬工单 */
    orderType: number;
    // 工单属性，0业主提报、1员工提报（内部报修）、2员工替报 */
    orderProperty: number;
    // 项目CODE */
    projectCode: string;
    // 项目名 */
    projectName: string;
    // 楼层ID */
    floorId?: number;
    // 房产ID */
    propertyId?: number;
    // 房产号 */
    propertyRoom?: string;
    // 业主ID */
    propertyOwnerId?: number;
    // 业主名字 */
    propertyOwner?: string;
    // 业主电话 */
    propertyPhone?: string;
    // 联系人 */
    contactPerson?: string;
    // 联系人电话 */
    contactPersonPhone?: string;
    // 工单子类，0户内报修、1公区报修 */
    orderTypeSub?: string;
    // 工单内容 */
    content: string;
    // 工单来源（字典项），来访、来电 */
    orderSource: string;
    // 附件 */
    fileList?: {
        // 查看地址 */
        viewAddress: string;
        // 旧文件名 */
        oldName: string;
        // 新文件名 */
        newName?: string;
        // 文件大小,单位：Mb */
        totalSize?: Record<string, unknown>;
        // 附件类型，0图片、1视频、2音频 */
        fileType?: Record<string, unknown>;
    }[];
}
// 响应接口
export interface CreatePraiseRes {
    code: number;
    data: number;
    msg: string;
}
/**
 * 创建表扬工单
 * @param {object} params 管理后台 - 表扬工单-流程使用创建 Request VO
 * @param {number} params.orderType 工单类型，0报修、1投诉、2表扬工单
 * @param {number} params.orderProperty 工单属性，0业主提报、1员工提报（内部报修）、2员工替报
 * @param {string} params.projectCode 项目CODE
 * @param {string} params.projectName 项目名
 * @param {number} params.floorId 楼层ID
 * @param {number} params.propertyId 房产ID
 * @param {string} params.propertyRoom 房产号
 * @param {number} params.propertyOwnerId 业主ID
 * @param {string} params.propertyOwner 业主名字
 * @param {string} params.propertyPhone 业主电话
 * @param {string} params.contactPerson 联系人
 * @param {string} params.contactPersonPhone 联系人电话
 * @param {string} params.orderTypeSub 工单子类，0户内报修、1公区报修
 * @param {string} params.content 工单内容
 * @param {string} params.orderSource 工单来源（字典项），来访、来电
 * @param {array} params.fileList 附件
 * @returns
 */
export function createPraise(params: CreatePraiseParams): Promise<CreatePraiseRes> {
    return request.post(`/yfwy/order/createPraise`, params);
}
// 响应接口
export interface GetPraiseRes {
    code: number;
    data: {
        // 主键 */
        id: number;
        // 项目CODE */
        projectCode: string;
        // 工单类型，0报修、1投诉 */
        orderType: number;
        // 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成 */
        orderState: number;
        // 工单编号 */
        orderNum: string;
        // 项目名 */
        projectName: string;
        // 工单属性，0业主提报、1员工提报（内部报修）、2员工替报 */
        orderProperty: number;
        // 房产号 */
        propertyRoom: string;
        // 提报时间 */
        orderTime: Record<string, unknown>;
        // 业主 */
        propertyOwner: string;
        // 业主电话 */
        propertyPhone: string;
        // 联系人 */
        contactPerson: string;
        // 联系人电话 */
        contactPersonPhone: string;
        // 工单内容 */
        content: string;
        // 提报人 */
        creatorName: string;
        // 问题附件列表 */
        fileList: {
            // 查看地址 */
            viewAddress: string;
            // 旧文件名 */
            oldName: string;
            // 新文件名 */
            newName: string;
            // 文件大小,单位：Mb */
            totalSize: number;
            // 附件类型，0图片、1视频、2音频 */
            fileType: number;
        }[];
    };
    msg: string;
}
/**
 * 获取表扬工单详情
 * @param {string} id
 * @returns
 */
export function getPraise(id: number): Promise<GetPraiseRes> {
    return request.get(`/yfwy/order/getPraise/${id}`);
}
// 参数接口
export interface PagePraiseParams {
    // 当前第几页(默认1) */
    current?: number;
    // 每页条数(默认20) */
    size?: number;
    // 项目CODE集合 */
    projectCode?: Record<string, unknown>[];
    // 工单编号 */
    orderNum?: string;
    // 客户姓名/电话 */
    nameOrPhone?: string;
    // 提报开始时间 */
    orderTimeStart?: Record<string, unknown>;
    // 提报结束时间 */
    orderTimeEnd?: Record<string, unknown>;
    // 工单属性，0业主提报、1员工提报（内部报修）、2员工替报 */
    orderProperty?: number;
    page?: {
        records?: {
            createTime?: string;
            updateTime?: string;
            creator?: Record<string, unknown>;
            updater?: Record<string, unknown>;
            // 主键 */
            id?: Record<string, unknown>;
            // 工单编号 */
            orderNum?: string;
            // 项目CODE */
            projectCode?: string;
            // 项目名 */
            projectName?: string;
            // 房产ID */
            propertyId?: Record<string, unknown>;
            // 房产号 */
            propertyRoom?: string;
            // 楼层ID */
            floorId?: Record<string, unknown>;
            // 业主名字 */
            propertyOwner?: string;
            // 业主ID */
            propertyOwnerId?: Record<string, unknown>;
            // 业主电话 */
            propertyPhone?: string;
            // 联系人 */
            contactPerson?: string;
            // 联系人电话 */
            contactPersonPhone?: string;
            // 工单类型，0报修、1投诉、2表扬 */
            orderType?: Record<string, unknown>;
            // 工单子类，0户内报修、1公区报修 */
            orderTypeSub?: string;
            // 工单分类ID */
            orderClassifyId?: Record<string, unknown>;
            // 工单分类名 */
            orderClassifyName?: string;
            // 条线 */
            orderProfessionalLine?: string;
            // 提报时间 */
            orderTime?: string;
            // 工单内容 */
            content?: string;
            // 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成 */
            orderState?: Record<string, unknown>;
            // 工单完成原因，0关单、1强制关单、2作废 */
            orderFinishReason?: Record<string, unknown>;
            // 工单完成人ID */
            orderFinishPersonId?: Record<string, unknown>;
            // 工单完成人 */
            orderFinishPerson?: string;
            // 工单完成人电话 */
            orderFinishPersonPhone?: string;
            // 工单完成时间 */
            orderFinishTime?: string;
            // 工单来源，字典项 */
            orderSource?: string;
            // 工单属性，0业主提报、1员工提报（内部报修） */
            orderProperty?: Record<string, unknown>;
            // 负责人ID */
            orderChargePersonId?: Record<string, unknown>;
            // 负责人 */
            orderChargePerson?: string;
            // 负责人电话 */
            orderChargePersonPhone?: string;
            // 接单时间 */
            taskingTime?: string;
            // 是否及时接单，0否1是 */
            taskingTimely?: Record<string, unknown>;
            // 责任归属，0物业、1地产 */
            orderChargeCompany?: Record<string, unknown>;
            // 得分 */
            score?: Record<string, unknown>;
            // 工单归属，0业主工单、1租户工单 */
            orderAscription?: Record<string, unknown>;
            // 租户ID，如果是租户工单 */
            renterId?: Record<string, unknown>;
            // 转单次数 */
            transferNum?: Record<string, unknown>;
            // 转地产时间 */
            transferTime?: string;
            // 回访状态，0无需回访、1未回访、2已回访 */
            visitState?: Record<string, unknown>;
            // 回访时间 */
            visitTime?: string;
            // 流程ID（流程表的ID） */
            flowId?: Record<string, unknown>;
            // 流程类型ID（流程配置表的ID） */
            flowType?: Record<string, unknown>;
            // 提交审核日期 */
            flowStartTime?: string;
            // 审核完成日期 */
            flowEndTime?: string;
            // 创建人/提报人 */
            creatorName?: string;
            // 是否首单跟进，0否1是 */
            followFirst?: Record<string, unknown>;
            // 数据来源，0：PC、1：APP */
            dataResource?: Record<string, unknown>;
        }[];
        total?: Record<string, unknown>;
        size?: Record<string, unknown>;
        current?: Record<string, unknown>;
        orders?: {
            column?: string;
            asc?: boolean;
        }[];
        optimizeCountSql?: boolean;
        searchCount?: boolean;
        optimizeJoinOfCountSql?: boolean;
        maxLimit?: Record<string, unknown>;
        countId?: string;
        pages?: Record<string, unknown>;
    };
}
// 响应接口
export interface PagePraiseRes {
    code: number;
    data: {
        size: number;
        total: number;
        current: number;
        records: {
            // 主键 */
            id: number;
            // 工单编号 */
            orderNum: string;
            // 项目名 */
            projectName: string;
            // 房产号 */
            propertyRoom: string;
            // 业主 */
            propertyOwner: string;
            // 业主电话 */
            propertyPhone: string;
            // 联系人 */
            contactPerson: string;
            // 联系人电话 */
            contactPersonPhone: string;
            // 提报时间 */
            orderTime: Record<string, unknown>;
            // 工单内容 */
            content: string;
        }[];
        pages: number;
    };
    msg: string;
}
/**
 * 获得分页（表扬工单）
 * @param {object} params 管理后台 - 表扬工单-流程使用分页 Request VO
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {array} params.projectCode 项目CODE集合
 * @param {string} params.orderNum 工单编号
 * @param {string} params.nameOrPhone 客户姓名/电话
 * @param {object} params.orderTimeStart 提报开始时间
 * @param {object} params.orderTimeEnd 提报结束时间
 * @param {number} params.orderProperty 工单属性，0业主提报、1员工提报（内部报修）、2员工替报
 * @param {object} params.page
 * @returns
 */
export function pagePraise(params: PagePraiseParams): Promise<PagePraiseRes> {
    return request.post(`/yfwy/order/pagePraise`, params);
}
/**
 * 导出Excel（表扬工单）
 * @param {object} params 管理后台 - 表扬工单-流程使用分页 Request VO
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {array} params.projectCode 项目CODE集合
 * @param {string} params.orderNum 工单编号
 * @param {string} params.nameOrPhone 客户姓名/电话
 * @param {object} params.orderTimeStart 提报开始时间
 * @param {object} params.orderTimeEnd 提报结束时间
 * @param {number} params.orderProperty 工单属性，0业主提报、1员工提报（内部报修）、2员工替报
 * @param {object} params.page
 * @returns
 */
export function exportExcelPraise(params: PagePraiseParams): Promise<Blob> {
    return request.post(`/yfwy/order/exportExcelPraise`, params, {
        responseType: 'blob',
    });
}
